package org.jpropelleralt.collection;

import java.util.Collection;

import org.jpropelleralt.list.ListDelta;

/**
 * Types of delta to a {@link Collection}. Part of the information contained in 
 * an appropriate delta ( {@link ListDelta}, {@link MapDelta} or {@link SetDelta} )
 * which also contains additional data to determine the scope of the change.
 */
public enum CollectionDeltaType {
	/**
	 * Type constant for a change which makes no guarantees of any
	 * similarity between collection before and after change.
	 * Any users of the collection should completely reassess it making 
	 * no assumptions.
	 */
	COMPLETE,
	
	/**
	 * Type constant for a change where where the collection remains the same
	 * size, but elements may have been replaced.
	 */	
	ALTERATION,
	
	/**
	 * Type constant for a change where one or more elements are 
	 * deleted from the collection.
	 */
	DELETION,
	
	/**
	 * Type constant for a change where one or more elements are 
	 * inserted into the collection.
	 */
	INSERTION,
	
	/**
	 * Type constant for a change where collection is completely cleared.
	 */
	CLEAR
}